<?php
/* Защитим файл от прямого доступа */
defined('_JEXEC') or die('Restricted access');

/* Теперь создадим класс с названием, которое записали в файле mod_название модуля.php
(в примере оно было записано так: ModJnameclassHelper)*/

class ModJspectacleHelper
{
  /* Теперь запишем основную функцию с названием, которое задали в файле mod_название модуля.php (в примере оно было записано так: getNamefunction($params))*/
  function getSpectacle ($params)
  {
    /* Тело функции, любой код и все, что необходимо пишем здесь.
       Для того чтобы обратиться к параметру функции (в нашем случае $params), нужно записать такую команду:
       $params->get('имя параметра'). Такая запись будет иметь значение параметра которое задано в настройке
       (администрировании) модуля под соответствующим именем.
       О том какие глобальные параметры еще могут передаваться в модуле поговорим в другой статье, сейчас
       объясняю только механизм работы.

       Главное, что нужно не забыть это в конце функции вернуть нужное значение или массив данных или просто true или false.

       Все условия и обработка должны находиться в теле этой функции.
       Можно создавать дополнительные функции как в теле этой так и вне ее и класса, но результат
       для передачи в Вид, должен находиться в теле этой функции*/

    /* Ветвление на отладочный блок выборки спектакля из базы данных календаря. Работающий блок
       визуализации параметров модуля - в ветви else */
    if($params->get('db')) {
      /* Массив месяцев в родительном падеже для формирования даты */
      $months = array (1 => 'января', 2 => 'февраля', 3 => 'марта', 4 => 'апреля',
                       5 => 'мая', 6 => 'июня', 7 => 'июля', 8 => 'августа',
                       9 => 'сентября', 10 => 'октября', 11 => 'ноября', 12 => 'декабря');

      $db =& JFactory::getDBO();
/* #__jcalpro2_events */
      $sql = "SELECT title, description, short_description, contact, cat, day, month, year, start_date, published ".
             "FROM jos_jcalpro2_events WHERE start_date >= NOW() AND published ORDER BY start_date LIMIT 0, 1";
      $db->setQuery($sql);
      $rows = $db->loadObjectList();
      /* Загоняем всё в возвращаемый массив.
         Порядок параметров в default.php: 0: $date, 1: $spectacle, 2: $picture, 3: $city, 4: $address, 5: $link */
      if($rows) {
        foreach ($rows as $row) {
          $view[0] = $row->day." ".$months[$row->month]." ".$row->year;
          $view[1] = $row->title;
          $desc = $row->description;
          $pos1 = strpos ($desc, 'title=');
          $pos2 = strpos ($desc, '/>');
          $view[2] = "<img ".substr ($desc, $pos1, $pos2 -$pos1 + 2);
          $view[3] = $row->short_description;
        }
      } else {
        $view[1] = "#NOTDEFINED";
      }

    } else {
      /* Массив спектаклей. Первый элемент - полное отображаемое название спектакля, второй - ссылка на страницу,
         третий - картинка по умолчанию. */

      $spectacles = array(
         'ja'    => array(
           '&laquo;Юнона&raquo; <br />и <br /> &laquo;Авось&raquo;',
           'reper/juno.html',
           'juno_nocast.png'),
        'jcs'   => array(
           '&laquo;Иисус <br />Христос&nbsp;&mdash; <br /> суперзвезда&raquo;',
           'reper/jesus.html',
           'jcs_dn.png'),
        'rj'    => array(
           '&laquo;Ромео <br />и <br /> Джульетта&raquo;',
           'reper/ridzh.html',
       'romeo_op.png'),
        'oe'    => array(
           '&laquo;Орфей <br />и <br /> Эвридика&raquo;',
           'reper/orpheus.html',
           'orfey.png'),
        'ds'    => array(
           '&laquo;Девушка <br />и <br /> смерть&raquo;',
           'http://vkontakte.ru/club11863366',
           'devsmert.png'),
        'kent'    => array(
           '&laquo;Кентервильское привидение&raquo;',
           'reper/cent.html',
           'orfey.png'),
        'kpd'    => array(
           '&laquo;Капитанская дочка&raquo;',
           'reper/kapdoth.html',
           ''),
        'skaz'    => array(
           '&laquo;Сказка <br />о мёртвой <br /> царевне <br />и о семи <br /> богатырях&raquo;',
           'reper/skaz.html',
           ''),
        'sp'    => array(
           '&laquo;Синяя птица&raquo;',
           'reper/bluebird.html',
           ''),
        'gu'    => array(
           '&laquo;Гадкий утёнок&raquo;',
           'reper/badbird.html',
           ''),
        'bz'    => array(
           '&laquo;Безымянная звезда&raquo;',
           'reper/nonamestar.html',
           ''),
        'ak'    => array(
           '&laquo;Белая акация&raquo;',
           '',
           'akacia.png'),
        'kmk'    => array(
           '&laquo;Целуй меня, Кэт!&raquo;',
           '',
           'kate1.png')
      );

      /* Получаем параметры модуля */

      $date = $params->get('date');
      $spectacle = $params->get('spectacle');
      $picture = $params->get('picture');
      $city = $params->get('city');
      $address = $params->get('address');
      $link = $params->get('link');

      /* Определяем полное название спектакля. Если не задано, возвращаем #NOTDEFINED, и вся остальная логика отключается */
      if($spectacle == '') {
        $view[1] = '#NOTDEFINED';
      } else {
        $spectacleFull = $spectacles[$spectacle][0];

        /* Если картинка не задана параметром, берём картинку по умолчанию */
        if($picture == '') {
          $picture = $spectacles[$spectacle][2];
        }

        /* Формируем строку картинки со ссылкой на спектакль */
        $pictureFull = '<a href="'.$spectacles[$spectacle][1].'"> <img title="скриншот" src="modules/mod_nearsp/images/'.$picture.'" alt="" width="108" height="108" /></a>';

        /* Если город не задан, считаем его Санкт-Петербургом */
        if($city == '') {
          $city = 'Санкт-Петербург';
        }

        /* Загоняем всё в возвращаемый массив.
           Порядок параметров в default.php: 0: $date, 1: $spectacle, 2: $picture, 3: $city, 4: $address, 5: $link */
        $view[0] = $date;
        $view[1] = $spectacleFull;
        $view[2] = $pictureFull;
        $view[3] = $city;
        $view[4] = $address;
        $view[5] = $link;
      }
    }
    return $view;
  }
}
?>
